#include <iostream>
#include <algorithm>
// 利用贪心的思想进行求解
// 尽可能的做第二个步骤，直到不能做为止
using namespace std;
typedef long long LL;
const int N = 1000010;
LL ans = 0;
int a[N];
int main()
{
    int n, k;
    cin >> n >> k;
    for (int i = 0; i < n; ++i)
        cin >> a[i];
    // 可以用单调队列优化时间复杂度
    // 每次找到最小值所在的位置，对区间k内的数全部减去当前数的最小值，然后从最小值之后的下一个数进行枚举
    for (int i = 0; i <= n - k;)
    {
        auto iter = min_element(a + i, a + i + k);
        ans += *iter;
        int tmp = *iter;
        for (int j = i; j < i + k; ++j)
            a[j] -= tmp;
        i = iter - a + 1;
    }
    for (int i = 0; i < n; ++i)
        ans += a[i];
    cout << ans << endl;
    // 请在此输入您的代码
    return 0;
}